System and method for maximizing software package license utilization

ABSTRACT

Enterprises procure a large number of licenses of a large number of software packages. Software package inventory is one of the high cost items in these enterprises. It is necessary to contain this recurring expenditure on software packages by optimally utilizing the procured licenses. Disclosed is a system and method for maximizing software package license utilization. The system includes components for enabling managers of an enterprise to describe their need for software packages in project plans and users to use the software packages based on such plans. Further, the system also manages unplanned demands to use software packages and maintains a near-optimal inventory of licenses of software packages.

FIELD OF THE INVENTION

[0001] The present invention relates to software package licenses in general, and more particularly, maximizing utilization of licenses of software packages. Still more particularly, the present invention relates to a system and method for maximizing software package license utilization by a near-optimal distribution of demands to use software packages.

BACKGROUND OF THE INVENTION

[0002] Software license management for optimum utilization in an enterprise has always been a challenging task. Typically an enterprise holds usage licenses for several SWPs which are used by multiple users at different times. The validity of these licenses can typically be one or more hours, one or more days, one or more months, or one or more years. These licenses are maintained on a central server that enforces licensing requirements based on demand from users. A software package can be used by a user for work purposes or for training purposes. In a large enterprise where, at any given time, several users demand for using an SWP, a good handling and distribution of demands with effective planning can maximize the utilization of licenses. Most of the work related demands that are based on a project plan are firm and many times non-negotiable. Also, it is necessary to address ad hoc and unplanned demands as well. Allocation of licenses of SWPs which is based on an in-depth analysis of project schedules will go long way in meeting the dual objectives of optimum license utilization and effective project management.

DESCRIPTION OF RELATED ART

[0003] U.S. Pat. No. 5,745,879 to Wyman and Robert M; for “Method and system for managing execution of licensed programs” (issued on Apr. 28, 1998) describes a license management system to account for software product usage, and is aimed at controlling the access to license and accounting the usage of each software license. The system also aids in formulating license utilization policy by providing reports on utilization of each license.

[0004] U.S. Pat. No. 5,742,757 to Hamadani; Mehrdad; and Huffman; Ward; for “Automatic software license manager” (issued on Apr. 21, 1998) describes a software license management system that facilitates a user at a local node of a computer network in selecting an appropriate type of software licenses available at the time of a request. In response to the user's request for a license of a required software tool, the system first checks whether a node-locked license assigned to the user node is available. If no such license is available, the system determines whether a floating license for the required software tool is available. In the absence of such a floating license or local node-locked license, the system finds out whether a node-locked license assigned to a remote node of the network can be used. In that case, the user is connected to the remote node to use that node-locked license. If no license for the required software tool is available at the time of the request, the system maintains a license request queue for the required software tool. The user is notified in when any license for the required software tool becomes available in the order of queue.

[0005] U.S. Pat. No. 6,502,079 to Ball; Scott Richard et.al for “Method and system for enforcing floating licenses” (issued on Dec. 31, 2002) describes a system and an enforcement method for floating licenses, which enables an authorized user to accumulate time-based usage credit while a software application is in use under a valid license. This system provides a method for making the application to remains accessible to the user even in the event of a license system fault, by consuming the usage credit that was previously accumulated. If the license system fault is corrected before all of the accumulated usage credits is consumed, the application remains accessible to the user under the valid license and resumes accumulating usage credit. By this, the system provides the user with un-interrupted application usage and at the same time prevents excessive unauthorized use of the application, thereby protecting the rights of the software vendor.

[0006] The known systems do not address the issue of effective utilization of the licenses in a large enterprise by proactive analysis of project schedules and license requirements of software packages. The present invention provides with a system that proactively analyses the needs of software licenses for the purposes usage of and training on software packages in a large enterprise and ensures that all of planned and unplanned needs are met and, simultaneously, maximizing the utilization of licenses.

SUMMARY OF THE INVENTION

[0007] Managing the utilization of licenses of SWPs is essential to lower the SWP inventory cost. The present invention provides a system and method for a near-optimal utilization of licenses by appropriately distributing the demands over a period of time. The invention advantageously uses the project schedules and open demands to achieve a near-optimal license utilization. One aspect of the invention is to provide a method for managing user profile and user interactions to create individual work and training plans, and use SWPs.

[0008] Another aspect of the invention is to provide a method for creating and modifying work project and training project plans.

[0009] Yet another aspect of the invention is to provide a method for an analysis of work project plans for training requirements.

[0010] Yet another aspect of the invention is to provide a method for an analysis of the usage of SWPs. Another aspect of the invention is to provide a method for an analysis of open, closed, and ad hoc demands for resources.

[0011] Yet another aspect of the invention is to provide a method for weekly and daily scheduling of work related demands, automatically scheduling training related demands, and planning procurement of licenses.

[0012] Yet another aspect of the invention is to provide a method for tracking events in real-time, usage costing, and user credibility analysis.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 describes the system architecture of SLAS system.

[0014]FIG. 2 depicts the network architecture related to SLAS system.

[0015]FIG. 2A depicts the various database tables that are part of SLAS system.

[0016]FIG. 3 describes the steps involved in user profile management.

[0017]FIG. 4 describes the steps involved in login/logout management.

[0018]FIG. 5 depicts the steps involved in individual work planning.

[0019]FIG. 6 depicts the steps involved in individual training planning.

[0020]FIG. 7 describes the various phases of work planning.

[0021]FIG. 7A depicts the main contents of a work plan.

[0022]FIG. 7B describes the steps involved in the processing of a work plan.

[0023]FIG. 7C describes the steps involved in the analysis of a work plan.

[0024]FIG. 8 describes the various phases of training planning.

[0025]FIG. 8A depicts the main contents of a training plan.

[0026]FIG. 8B describes the steps involved in the processing of a work plan.

[0027]FIG. 8C describes the steps involved in the analysis of a training plan.

[0028]FIG. 9 describes the steps involved in the analysis of training requirements.

[0029]FIG. 10 describes the steps involved in usage analysis.

[0030]FIG. 11 describes the steps involved in resource demand analysis for an SWP.

[0031]FIG. 11A describes the steps involved in the analysis of dependency trees.

[0032]FIG. 12 describes the steps involved in weekly and daily scheduling.

[0033]FIG. 12A describes the steps involved in automated training scheduling.

[0034]FIG. 12B describes the steps involved in procurement planning.

[0035]FIG. 13 describes the steps involved in processing the login event related to the real-time usage tracking.

[0036]FIG. 13A describes the steps involved in processing logout and timer events.

[0037]FIG. 14 describes the steps involved in usage costing.

[0038]FIG. 15 describes the steps involved in credibility analysis.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0039]FIG. 1 depicts the system architecture of SLAS system (100) as consisting of three subsystems, namely, User Management subsystem, Plan Management subsystem, and License Usage Management subsystem. The main objectives of the SLAS system are: to appropriately allocate licenses of software packages (SWPs) to the demanding users to carry out their work using the software packages, to appropriately allocate licenses of software packages to the demanding users to get trained on the software packages, to maximally utilize the available licenses of software packages by automatically scheduling training and open sessions, and to analyze the demands on software packages to arrive at a procurement plan of annual, monthly, and hourly licenses of the software packages.

[0040] Typically, an enterprise deploys multiple SWPs and uses them on need basis. These SWPs are server-based and the licenses of these SWPs are managed by a network-based licensing manager. Distinct multiple kinds of licenses are procured for each SWP and it is essential to ensure that these licenses are put to best use. An average low utilization of an SWP and a bursty peak demand requires a large number of licenses to meet the user demands. A good demand distribution to contain the bursty demands and smoothen the average demand reduces the overall SWP inventory cost. SLAS keeps track of the number of licenses of an SWP available at any point in time and suggests the best possible time to schedule the usage of the SWP so as to minimize the unused hours of the SWP. In order to effectively keep track of the utilization of SWPs, the enterprise working hours are divided into smaller units called as slots. The duration of a slot is configurable and typically, it is about fifteen minutes. SLAS allocates licenses to the demanding users for a duration that is an integral multiple of slot duration. In order to systematically obtain the demands for the SWPs, SLAS connects seamlessly with the project planning software used by the managers of the enterprise. When a manager uses the project planning software to plan on the various activities related to a project, a line item in such a project plan is the identification two distinct kinds of resources: one is the identification of one or more human resources (also referred to as users), and second is the identification of an SWP that is required to be used by these human resources to perform the task mentioned in the plan. It is most appropriate to capture this demand of one or more licenses of the SWP for a pre-defined duration in order to achieve a good demand distribution.

[0041] As more and more SWPs, and newer versions of the existing SWPs get added to the software inventory of the enterprise, it becomes necessary to train the users on these new SWPs and the new features of the SWPs. Managers plan training programs to ensure that their team members are adequately skilled in the SWPs of interest to them. Similar to the project plan, a managers uses the project planning software to describe the training plans. A line item in such a plan is the identification of the users and the appropriate number of licenses of SWPs for the required duration with a clear start date/time and end date/time. SLAS captures this requirement to in order to achieve a good demand distribution.

[0042] There are three kinds of demands that SLAS system addresses, namely, closed demand, open demand, and ad hoc demand. Closed demands are the planned demands and these demands are captured during project planning phase. As project plans get revised periodically, SLAS system revises the demand for various SWPs based on the changes in the project plans. The other important characteristics of the closed demands are that these demands are frozen, at least temporarily, with respect to date and time enabling a better analysis of the demands. Open demands, on the other hand, indicate non-project, individualistic demands to use SWPs. Some of the users are keen to carry out additional, exploratory work to improve their skills in efficiently using the advanced features of the SWPs. While such open demands need to be met, there is no strict date/time constraints and this aspect is exploited by SLAS system in maximizing the usage of the SWPs. Ad hoc demands are non-planned demands to meet emergency situations. SLAS addresses such demands by prioritizing and accommodating the demands and reallocating the licenses to handle high priority, ad hoc demands.

[0043] The software inventory consists of multiple SWPs and their associated licenses. There are three distinct kinds of licenses, namely, annual licenses, monthly licenses, and hourly licenses. One of the objectives of SLAS system is to reduce the overall inventory cost by procuring an appropriate number annual, monthly, and hourly licenses. It is a matter of fact that annual licenses are cheaper than monthly licenses and the monthly licenses, in turn, are cheaper than hourly licenses. SLAS system analyzes the demand and utilization patterns to compute the number of various kinds of licenses required. Further, ad hoc demands are also addressed by procuring hourly licenses on just in time basis.

[0044] The individuals who are part of SLAS system play different kinds of roles: “user” role, “manager” role, and “administrator” role. The individuals who play the “user” role are called as users and these users use the SWPs to carry out the assigned work. The individuals who play the “manager” role are called as managers and these managers assign work to users. The individuals who play the role of “administrator” is called as administrators. User Management subsystem (105) manages the interactions of users with SLAS system. The users are registered into the system and from then on, SLAS manages the needs of the users in accessing SWPs. Work gets assigned to the users by their managers and the users access the required SWP by logging into SLAS system. On completion of the work or if the allotted time gets completed, the users log out of SLAS system. SLAS system keeps track of the logged in users with respect to their allotted time and warns them appropriately when the allotted time is about to expire. User's profile indicates any restrictions applicable with respect to the accessing of the SWPs, access time and duration restrictions. The users plan their non-project related work and interact with SLAS system to submit their such needs. These open demands indicate the preferred time and the required total number of hours of access. The users also change their open demands to indicate the changes to the already made open demands including withdrawal of the same. SLAS system notifies the users about their allotment against the open demands. Even though the initial allotment is for a certain duration, SLAS system sends a short closure message and requesting the users to log out at the end of current or next immediate slot. Also, the users plan on their training requirements (again, non-project related) and interact with SLAS system to convey the same.

[0045] Plan Management subsystem (110) manages the interactions of managers with SLAS system. Managers interact with SLAS to create work plans and training plans. Mangers use their familiar planning software to plan on the tasks and users to execute these tasks. SLAS seamlessly integrates with such a planning software to capture work and training related needs to access SWPs. SLAS system analyses the work and training demands, and obtains a consolidated demand from multiple managers for the various SWPs. SLAS system also analyses the work plan and the overall demand to determine any training requirements for any of the users mentioned in the work plans. For this purpose, the system keeps track of all the scheduled training sessions with respect to the various versions of various SWPs and determines automatically any of the training needs. The system performs the usage analysis to determine the extent of use of the various SWPs by the various users and computes the following: hits, misses, delayed starts, early closures, and denials. A hit indicates that the user logged in on time and logged out as scheduled. A miss indicates the user didn't log in at the scheduled time. A delayed start indicates the user logged in late into the system while an early closure indicates that the user logged out earlier to the scheduling closing time. Finally, a denial indicates that due to high priority ad hoc requests, a user request is rejected. These counts are use to build in fairness in processing the requests from the users.

[0046] License Usage Management subsystem (115) maximizes the utilization of the available licenses of the various SWPs. This subsystem analyses open, closed, and ad hoc demands to access SWPs and tries to balance the demand across various slots. The system, where appropriate, combines, splits, and shifts demands, in consultation with the managers, to avoid bursty demands. As planned demands can change over time, the system performs weekly and daily analysis of demands to schedule and reschedule the usage of the SWPs by the various users. During demand analysis, the system makes use of open and ad hoc demands meaningfully in arriving at a best possible weekly and daily schedules. The system analyses the direct and indirect training demands to generate an appropriate training schedule. Direct demand refers to the planned training requests from the managers and the users while the indirect demand refers to the system identified training requirements.

[0047] In order to meet successfully the various kinds of demands, the system analyses these demands and usages to identify an optimal mix of annual, monthly, and hourly licenses. Also, as regards to hourly licenses, the system interacts online with vendors to obtain the required licenses “just in time.” Usage tracking involves keeping track of users' log in/log out events to have an up-to-the-minute account of license availability. This helps in making best use of early closures and address effectively late closures. On log out, the system determines the duration of usage of an SWP by a user and computes the usage cost by using the factors such as day of usage, time of usage, duration of usage, nature of usage, and nature of the SWP. Usage tracking also helps in determining a usage pattern of user and predict the user behavior patterns as one of on time, early start, late start, early close, late close, and frequent miss. This predicted pattern is used to adjust the demand request to accommodate ad hoc and excessive demands.

[0048]FIG. 2 depicts the network architecture related to SLAS system. The main elements in the network architecture are SLAS System (server component), SLAS System (client component), and SWP repository. SLAS Server Component (200) implements the Plan Management and License Usage Management subsystems. There are multiple SLAS Client Components (202) that implement User Management subsystem. SWP repository (204) stores the various software packages and, based on need and demand, a required SWP is launched. In order to facilitate real-time interaction among these components and subsystems, the respective computer systems are interconnected using Ethernet. SLAS System (server component) is connected to SWP vendors (206) through a secured IP network. This network interconnection allows SLAS System to interact with SWP vendors in real-time to procure just in time hourly licenses and other kinds of licenses.

[0049]FIG. 2A depicts the various database tables that are part of SLAS system. 205 describes the database table related to login information. 210 describes the table related to user information. List of SWPs indicates the access is allowed only to the SWPs mentioned in the list. Further, if there non blank entries under the columns, Access Time and Access Duration, the access to the SWPs is allowed only during the mentioned Access Time with a duration limited by the mentioned Access Duration. User Information (215) also consists of details such as hours worked and trained so far on an SWP, last version of SWP used, expected usage of the SWP for working purposes and for training purposes. SWP database (220) consists of information related to a SWP such as its version number, date of installation, and number of distinct kinds of licenses. Usage related database (225) consists of information such as number of allotted and utilized licenses for each SWP and for each slot.

[0050]FIG. 3 describes the steps involved in user profile management. A user profile consists of information about the user such as date of registration into the system (302), role, list of allowable SWPs (with blank indicating access to all), and access time and duration restrictions. User Management subsystem obtains these information (304), validates the information for consistency, and updates User Information database (306). The user profile information is modified based on the need and the modified information updated onto User Information database.

[0051]FIG. 4 describes the steps involved in login/logout management. Users login to the system to interact and carry out the various activities (402). On user login, the system gets the user profile from the user information database (404). In step 406, the system determines the user's role. If the user's role is administrator, then the user performs the administration related activities such as the generation of various reports (408). On the other hand, if the role of the user is manager, then the user, based on need, performs work planning to create or modify a work project plan (410) or performs training planning to create or modify a training project plan (412). If the role of the user is to use the system to interact with SWPs, the system determines the nature of interaction (414). If the operation is to access SWP, the system determines the allowed SWPs and checks about the access time restrictions (416). Based on the work or training plan and allowable list of SWPs for the user, the system allows the user to use the chosen SWP (418). On the other hand, if the user likes to plan for working, then the user uses the appropriate interfaces of the system to perform individual work planning (420). Otherwise, if the user would like to plan for getting trained on an SWP, then the user uses the appropriate interfaces of the system to perform individual training planning (422). After the completion of the planned activities, the user logs out of the system (424). The system updates the usage information database (426).

[0052]FIG. 5 depicts the steps involved in individual work planning. Most of the user interactions with the SWPs are based on work or training project plan. Occasionally, however, users would like to interact with the system outside these planned activities. These kinds of interactions related to work is termed individual work planning. In order to maximize the utilization of licenses, the individual work planning requests are inputted as open demands. An open demand mentions the SWP of interest and duration indicating how long the user would like to interact with the system. It also mentions the period within which the user would like to complete the usage of the SWP. The system plans to allocate the time slots for such open demands in such a way as to achieve a good load distribution. User logs into the system and chooses individual work planning option (504). If, further, the user chooses to create a new open demand request for an SWP (506), user inputs the required information related to the open demand (508). System validates the input based on user profile and checks whether the inputted SWP and duration are appropriate (510). If the input information is not appropriate (512), the system displays the allowable SWPs and the duration enabling the user to input the correct information (514). On the other hand, if the input information is appropriate (512), the system checks whether there is an OD with respect to the selected SWP (518). If yes (520), the system informs the user about the existing OD (522). On the other hand, if there is no pending OD for the selected SWP (520), the system updates the usage information with the new OD request (524). If the user chooses to modify an existing OD (506), the system displays the existing ODs related to the user (526). The user selects and modifies an OD (528) and the usage information database is appropriately updated (524). On the other hand, if the user would like to delete an OD (506), the system displays the existing ODs related to the user (530). The user selects an appropriate OD (532) and deletes the same (534). The usage information database is updated to reflect the deletion (524).

[0053]FIG. 6 depicts the steps involved in individual training planning. In order to maximize the utilization of licenses, the individual training planning requests are inputted as open demands. An open demand mentions the SWP of interest and duration indicating how long the user would like to interact with the system. It also mentions the period within which the user would like to complete the usage of the SWP. The system plans to allocate the time slots for such open demands in such a way as to achieve a good load distribution. User logs into the system and chooses individual work planning option (604). If, further, the user chooses to create a new training demand request for an SWP (606), user inputs the required information related to the training demand (608). System validates the input based on user profile and checks whether the inputted SWP and duration are appropriate (610). If the input information is not appropriate (612), the system displays the allowable SWPs and the duration enabling the user to input the correct information (614). On the other hand, if the input information is appropriate (612), the system checks whether there is a training demand with respect to the selected SWP (618). If yes (620), the system informs the user about the existing training demand (622). On the other hand, if there is no pending training demand for the selected SWP (620), the system updates the usage information with the new training demand request (624). If the user chooses to modify an existing training demand (606), the system displays the existing training demands related to the user (626). The user selects and modifies a training demand (628) and the usage information database is appropriately updated (624). On the other hand, if the user would like to delete an existing training demand (606), the system displays the existing training demands related to the user (630). The user selects an appropriate training demand (632) and deletes the same (634). The usage information database is updated to reflect the deletion (624).

[0054]FIG. 7 describes the various phases of work planning. There are three main phases in work planning, namely, plan creation, plan analysis, and plan confirmation (700). When a plan is created, availability of the required licenses is checked and unallocated licenses are marked as blocked to indicate that these licenses are likely to be used. In the next phase, plan analysis is carried out and during this phase an attempt is made to distribute the load due to the plan being analyzed as much across as possible to facilitate better license utilization. The status of license utilization is changed from being “blocked” to being “planned.” In the final phase, plan is further analyzed to confirm allocations and the status of license is changed from being “planned” to being “firm.”

[0055]FIG. 7A depicts the main contents of a work plan. A work plan largely defines multiple WUs and describes dependencies among these WUs (705). Each described WU is bound with a set of users using an SWP for a specified duration.

[0056]FIG. 7B describes the steps involved in the processing of a work plan. In step 710, manager uses a project planning software to create a WP plan. The creation or modification of a WP plan involves the creation or modification of the WUs using the project planning software (712). For each WU, the manager assigns one or more users and an SWP that the users have to use to complete the assigned task (714). In step 716, manager inputs the required time slot (T) and duration (D) that provides the information about the starting date and time, and the ending date and time. The system analyses the inputted WU and splits the same into as many AWUs as possible, each AWU with the attributes of a set of users, an SWP, start time slot, and end time slot that are derived from the attributes of the WU. For each AWU, the system determines the availability of the licenses of the associated SWP (720) and if available (722), the system updates the usage information database with blocked WL allocation of the SWP. On the other hand, if the licenses are not available (722), then the system updates the usage information with license not being available (728). If there are more WUs to be defined or modified (726), the system performs from step 712 onwards.

[0057]FIG. 7C describes the steps involved in the analysis of a work plan. The analysis is carried out to fine tune the work plan to achieve a better distribution of load across multiple time slots and days and is based on underlying dependency tree analysis. In step 750, WP is analyzed to construct one or more dependency trees with the roots of the dependency trees denoting AWUs with no dependencies. For each dependency tree (D), the steps 754 through 776 are performed (752). The nodes in D from its root are analyzed and let N be the current node for which WL is not available (754). Determine the attributes of N, namely, SWP, start time slot, end time slot, and the number of users (756). It is required to shift the start time slot to new slot such that dependency constraints are not violated and WL availability is assured. Determine shift tolerance based on neighborhood dependency (758). In one of the preferred embodiments, this is achieved by analyzing the time slots of the nodes on which N depends and the nodes that dependent on N. For each user, the steps 762 through 772 are performed (760). The user data is analyzed to determine the characteristic usage pattern and this pattern is used to readjust the time slots (762). This is an optimistic planning to maximize license utilization. The readjustment also ensures that license availability due to early closures and license demands due to late closures are being anticipated and have been suitably addressed. A check is made to determine whether it is possible to shift the time slots within shift tolerance in such a way that the user is free during the shifted time slots (764). If so (766), update usage information database and inform manager to modify suitably the WP plan (768). If there are still some users yet to be analyzed (770), then the next user is determined (772) and the processing continues from the step 762. On the other hand, if there are no more users (770), a check is made to determine if there more nodes in D yet to be analyzed (774). If so (774), the next node N is determined (776) and the processing continues from the step 756 onwards. On the other hand, if there are no more nodes (774) and the processing of all the dependency trees is completed, then WP analyzed to automatically generate training schedules (778).

[0058]FIG. 8 describes the various phases of training planning. There are three main phases in training planning, namely, plan creation, plan analysis, and plan confirmation (800). When a plan is created, availability of the required licenses is checked and unallocated training licenses are marked as blocked to indicate that these licenses are likely to be used. The system handles two distinct kinds of licenses, namely, Training Licenses and Work Licenses. In the next phase, plan analysis is carried out and during this phase an attempt is made to distribute the load due to the plan being analyzed as much across as possible to facilitate better license utilization. The status of license utilization is changed from being “blocked” to being “planned.” In the final phase, plan is further analyzed to confirm allocations and the status of license is changed from being “planned” to being “firm.”

[0059]FIG. 8A depicts the main contents of a training plan. A training plan largely defines multiple TUs and describes dependencies among these TUs (805). Each described TU is bound with a set of users using an SWP for a specified duration.

[0060]FIG. 8B describes the steps involved in the processing of a work plan. In step 810, manager uses a project planning software to create a TP plan. The creation or modification of a TP plan involves the creation or modification of the TUs using the project planning software (812). For each TU, the manager assigns one or more users and an SWP on which the users get trained (814). In step 816, manager inputs the required time slot (T) and duration (D) that provides the information about the starting date and time, and the ending date and time. The system analyses the inputted TU and splits the same into as many ATUs as possible, each ATU with the attributes of a set of users, an SWP, start time slot, and end time slot that are derived from the attributes of the TU (818). For each ATU, the system determines the availability of the training licenses of the associated SWP (820) and if available (822), the system updates the usage information database with blocked TL allocation of the SWP. On the other hand, if the licenses are not available (822), then the system updates the usage information with license not being available (828). If there are more TUs to be defined or modified (826), the system performs from step 812 onwards.

[0061]FIG. 8C describes the steps involved in the analysis of a training plan. The analysis is carried out to fine tune the training plan to achieve a better distribution of load across multiple time slots and days and is based on underlying dependency tree analysis. In step 850, TP is analyzed to construct one or more dependency trees with the roots of the dependency trees denoting ATUs with no dependencies. For each dependency tree (D), the steps 854 through 868 are performed (852). The nodes in D from its root are analyzed and let N be the current node for which TL is not available (854). Determine the attributes of N, namely, SWP, start time slot, end time slot, and the number of users (856). It is required to shift the start time slot to new slot such that dependency constraints are not violated and TL availability is assured. Determine shift tolerance based on neighborhood dependency (858). In one of the preferred embodiments, this is achieved by analyzing the time slots of the nodes on which N depends and the nodes that dependent on N. A check is made to determine whether it is possible to shift the time slots within shift tolerance in such a way that the user is free during the shifted time slots (860). If so (862), update usage information database and inform manager to modify suitably the TP plan (864). A check is made to determine if there more nodes in D yet to be analyzed (866). If so, the next node N is determined (868) and the processing continues from the step 856 onwards.

[0062]FIG. 9 describes the steps involved in the analysis of training requirements. The objective is to analyze a WP plan to determine the extent of training required for the users who are part of the WP plan (902). For a given WP, determine the users who are part of the WP plan (904). For each such user, perform the steps 908 through 932 (906). Identify the multiple SWPs that the user is expected to use (908). For each such SWP, perform the steps 912 through 932 (910). Determine the current version (V_(C))of the SWP (912). Determine the last version (V_(T)) of the SWP that the user has been trained on (914). Determine the last version (V_(W)) of the SWP that the user has worked on (916). Check whether V_(C) and V_(T) differ in major version number (918). An SWP version is identified by a version number that is a combination of major and minor version numbers and change in major version number indicates a substantial revision to the SWP. If V_(C) and V_(T) do not differ in the major version number, then no training session is automatically scheduled. On the other hand, if they do differ (918), a check is made to determine if V_(W) is less than or equal to V_(T) that is less than V_(C) (920). In other words, a check is made to determine whether the user working knowledge is restricted to an older version and the user had gotten trained on a later version. If it is not so, then no training session is automatically scheduled. On other hand, if it is so (920), determine the hours of online training required (922). Divide these hours into ATUs (924). Determine the time slots when the user is free (926). Determine the available TLs (928). For each ATU, schedule a training program based on the availability (930). Update the user and usage databases and inform the user and the user's manager regarding the training sessions (932).

[0063]FIG. 10 describes the steps involved in usage analysis. For a given WP plan, user, and SWP, determine the user's characteristics (1002). The objective is to determine the characteristics behavior of the user with respect to an SWP in terms of early/late logins and early/late closures and use the same is for readjusting the demanded duration to use the SWP. Determine the allotted time slots of the SWP for the user (1004). Determine the actual login and logout time slots (1006). Find the expected difference (D_(S)) between the allotted start and actual start time slots (1008). Find the expected difference (D_(D)) between the allotted end and actual end time slots (1010). Add D_(S)/2 to the planned start time (1012) and subtract D_(E)/2 from the planned end time (1014). This readjustment helps in maximizing the license utilization and avoiding unforeseen demands by exploiting the expected user behavior. Finally, update the usage information database (1016).

[0064]FIG. 11 describes the steps involved in resource demand analysis for an SWP. There are three different kinds of demands handled by the system, namely, open demands, closed demands, and ad hoc demands. Open demands are the demands that do not have a strict date/time requirement and closed demands the demands that have strict date/time requirements due to explicit dependencies. Ad hoc demands are unplanned demands with a strict date/time requirements. Steps 1104 through 1114 describe the open demand analysis (1102). For each OD, the steps 1106 through 1114 are performed (1104). Let D be the OD interval and E be the elapsed time, that is, time difference between current time and the start time of the OD (1106). Also, let R be the requested hours and S be the satisfied hours. Based on D, E, R, and S, compute ODF (1108). ODF indicates a sensitivity in handling ODs. In a preferred embodiment, ODF is computed so as to distribute the load equally across the weeks of D. Further, ODF computation can also account for the demand for the SWP during the coming week. A check is made to determine whether ODF is greater than or equal to a threshold (1110). If so, determine S′ such that S′>S and ODF becomes less than the threshold (1112). S′-S needs to be scheduled during the coming week (1114). If it is not so (1110), there may not be a need to schedule time slots to meet this OD. Steps 1132 through 1140 describe the closed demand analysis (1130). Perform the steps 1132 through 1140 for al WP plans (WP based analysis) and for all TP plans (TP based analysis). For each SWP, construct a matrix depicting slot-wise demands by users (1134). Determine critical slots with total demand exceeding the availability during next week (1136). If there are critical slots (1138), perform week-specific decision tree analysis (1140). Otherwise (1138), there is no need to undertake any analysis as sufficient licenses are available to meet the demand. Steps 1152 and 1154 describe the ad hoc demand analysis (1150). For each project, determine the total planned demand and ad hoc demand (1152). Based on total planned demand, total ad hoc demand, project priority, and total demand to be next week, determine the revised priority for the ad hoc demand request during the next week (1154). This revised priority is used in weekly scheduling to allocate licenses to the demands.

[0065]FIG. 11A describes the steps involved in the analysis of dependency trees. Steps 1162 through 1180 describe the steps involved in week-specific decision tree analysis. Construct partial dependency trees corresponding to the next week for all the projects (1162). Construct partial demand matrix for the next week for all projects and determine critical slots (1164). For each critical slot, perform the steps 1168 through 1180 (1166). Determine AUs that are active in the critical slot (1168). AUs are either AWUs if the analysis is being performed for WP plans or are ATUs if the analysis is being performed for TP plans. Order AUs based on minimum left/right shift required and shift tolerance (1170). Select AU from top of the list (1172). Adjust the slots depending on user availability (1174). Check for the existence of criticality (1176). If still critical, that is, total demand is in excess of availability, then check whether there are AUs yet to be adjusted (1180). If so, the processing continues from the step 1172 onwards.

[0066]FIG. 12 describes the steps involved in weekly and daily scheduling. Steps 1202 through 1246 describe the details of usage scheduling (1200). There are two different types of scheduling activities performed at different frequencies, namely, weekly and daily scheduling activities. Weekly scheduling is performed once a week while daily scheduling performed once a day. Weekly scheduling is used to confirm open and closed requests while daily scheduling helps to account for the changes in the plan.

[0067] Steps 1204 through 1224 describe the process of weekly scheduling (1202). For each SWP, the steps 1206 through 1222 are performed (1204). Construct a demand matrix of users and time slots with different kinds of demands such as open, closed, and ad hoc demands (1206). Determine the critical slots in the demand matrix (1208). For each critical slot, perform the steps 1212 through 1222 (1210). Identify the projects and users who are part of the slot (1212). Arrange demands based on project priority and the user's CF in a non-decreasing order (1214). Based on excess demand, project priority, and CF, determine the derived demand (1216). In a preferred embodiment, the determination of derived demand involves reducing the demands of low priority projects by a certain fraction and reducing the demands of users with low CF by a certain fraction. Such a reduction is based on the expected behavior of users and leads to an optimistic scheduling. Note the above reduction is used only to compute the overall demand and is not communicated to the managers and users. Check if the derived demand exceeds the total availability (1218). If so, identify users who are on the top of the ordered list and do a best possible adjustment including negotiation for a new time slot that is relatively less loaded (1220) and the steps 1212 through 1220 are repeated for all the critical slots (1222). If it is not so (1218), the steps 1212 through 1220 are repeated for all the critical slots (1222). Finally, communicate the confirmed schedule to the managers (1224).

[0068] Steps 1232 through 1246 describe the process of daily scheduling (1230). For each SWP, the steps 1234 through 1246 are performed (1232). Construct a demand matrix of users and time slots with different kinds of demands such as open, closed, and ad hoc demands (1234). Determine the critical slots in the demand matrix (1236). For each critical slot, perform the steps 1240 through 1246 (1238). Identify the projects that are part of the slot (1240). Arrange demands based on project priority in a non-decreasing order into a list (1242). Identify a minimum number of demands from top of the list and remove their demands from the overall demand such that the criticality disappears, that is, the total demand is less than or equal to the availability and for these demands, update the usage information with “negotiate” (1246). Marking a demand with “negotiate” indicates that on user login, the system negotiates with the user for a possible shifting of the slot.

[0069]FIG. 12A describes the steps involved in automated training scheduling. Steps 1252 through 1278 describe the process of automatic training scheduling (1250). A training demand is of different kinds: Open, Closed, and Auto. In an open training demand, the demand indicates an SWP, duration of training, and a period within which the training is required to be completed. A closed demand, on the other hand, describes a planned training activity for a batch of users. Further, the planned activity also mentions about the usage of an SWP during a scheduled time period. The TP plan also indicates the dependencies among the various training sessions spread over an interval (1252). The automatic training scheduling is performed once a week immediately after weekly scheduling of WLs (1254). For each SWP and for each day of week, perform the steps 1258 through 1276 (1256). Determine the expected utilization and find our lean and heavy slots (1258). Lean slots are those slots that have least expected demand while heavy slots are expected to have high demand. Determine the number of WLs that can be converted into TL (1260). Construct a demand matrix with respect to users and slots (1262). Analyze the training demands; there are three categories of training demands, namely, open, closed, and auto (1264). Auto demands are those training requests that are automatically generated by the system during WP plan analysis. As for as scheduling is concerned, these auto requests are treated as similar to open demands. Determine the free time slots of the users (1266). Fill in the demand matrix in a best possible way (1268). This filling in step makes use of the free slots of the users and “lean-ness” of the slots. Determine the critical slots based on the availability of TLs (1270). If critical slots exist (1272), reduce the overall demand by eliminating demands in the order of auto, open, and closed demands (1274). The processing continues from the step 1256 onwards. Finally, communicate users and managers about the confirmed training schedule (1278).

[0070]FIG. 12B describes the steps involved in procurement planning. Steps 1280 through 1297 describe the process of license procurement. Step 1282 describes the procurement of hourly licenses (1281). Hourly licenses are procured just in time to meet the excess and ad hoc demands (1282). This is achieved by communicating with license providers in real-time over the network. Steps 1285 through 1280 describe the process of migrating to monthly and annual licenses (1283 and 1284). Analyze the procured hourly/monthly licenses (1285). Determine the pattern of procurement (1286). Determine the portion of month/year covered by these procurements (1287). If the portion does cover a substantial part of a month/ year (1288), then some of hourly/monthly licenses are released to acquire monthly/annual licenses. Such a migration is undertaken as annual licenses are relatively cheaper than monthly licenses that in turn are cheaper than hourly licenses. Hence, from the overall cost point of view, it is better to have more annual and less of hourly licenses, and aim for better utilization of these licenses. The proposed invention suggests an approach for achieving this better utilization of SWP licenses. Steps 1292 through 1296 describe the process of migrating to monthly and hourly licenses (1290 and 1291). Analyze the utilization of annual/monthly licenses (1292). Determine the pattern of usage (1293). Determine the portion covered by the utilization over a year/month period. If the portion covers only a small portion of the period (1295), the some of annual/ monthly licenses are released and additional monthly/hourly licenses are procured (1296). Step 1297 describes the release of hourly licenses of an SWP (1296). Licenses expire at the end of the allotted period and are not further usable (1297).

[0071]FIG. 13 describes the steps involved in processing the login event related to the real-time usage tracking. Steps 1304 through 1336 describe the processing of login event (1302). On event user login, determine allotted time slot for the logged in user (1304). Check to determine if the nature of demand is ad hoc (1306). If it is not ad hoc login, compare the allotted time slot and login time slot (1308). If the user had logged in on-time or has logged in late, check for the availability of licenses (1310). If license is available (1312), update usage and SWP information (1314). On the other hand, if license is not available (1312), determine the nature of demand, project priority, and user CF (1316). Check if any late close sessions can be short closed after notification; also check if hourly license needs to be procured; and if training session, check if WL is available and can be used for training purpose (1318). Based on the above factors, determine whether login can be allowed (1320). If so, update usage and SWP information (1314). If not, determine expected logouts in the next immediate slot that can be used to allow the current login (1322) and determine whether to put on hold the logged-in user (1324). If so, add the user information to a priority queue (1326). Otherwise, negotiate with the user for an alternative slot (1328). On the other hand (1308), if the user had logged-in early, determine additional number of slots (1330). Check if license is available and there are no expected logins (1332). Determine whether login can be allowed (1334). If so, update usage and SWP information (1314). Otherwise, inform user and force logout (1336).

[0072] On the other hand (1306), if the current login is an ad hoc login, then the processing continues from the step 1316 onwards.

[0073]FIG. 13A describes the steps involved in processing logout and timer events. Steps 1352 through 1360 describe the handling of logout event (1350). On event logout, determine allotted time slot (1352). Update the usage and SWP information (1354). Check the priority queue and determine if the user at the head of the queue can be allotted the license (1356). If the user can be allowed to login (1358), then update the usage and SWP information (1360). Steps 1364 through 1398 describe the steps involved in handling of timer event (1362). On timer event, analyze the demand and determine the number of licenses along with the period of availability (1364). Determine the users whose session closes in the current time slot (1366). For each such user, perform the steps 1370 through 1392 (1368). Determine the nature of login, project priority and user CF (1370). Determine whether the user can be given an extension taking into account entries in the priority queue (1372). If so (1374), send notification to check whether the user would like to extend the usage (1376). If the user would like to extend (1378), get extension time, validate and revise if necessary, and grant (1380). And, update the usage and SWP information (1382). On the other hand (1374), if the user session cannot be extended, then send notification to the user requesting for the session closure (1384). If the user needs an extension (1386), then determine whether this extension can be an exception based on project priority and CF. If the extension can be granted (1390), then the processing continues from the step 1380 onwards. Otherwise, send notification that the session will be force closed at the end of current time slot (1392).

[0074] On timer event (1362), analyze the entries in the priority queue (1394). Determine if any users are waiting for longer than a threshold number of slots (1396). If so, inform and force logout such user sessions (1398).

[0075]FIG. 14 describes the steps involved in usage costing. Steps 1404 through 1412 describe the processing involved in usage costing (1402). Usage costing is done whenever a logged-in user logs out (1404). On event logout, determine the following: SWP, nature of demand, total hours used, and extended hours, if any (1406). Costing is based on factors such as whether the usage was work or training project related, whether the demand was an open, closed, or ad hoc demand, and was there an ad hoc extension. Determine discount factor based on whether the user accommodated an extension or whether the demand was an open demand (1408). Compute usage cost based on rate/time slot and the above factors, and update the usage cost information (1410).

[0076]FIG. 15 describes the steps involved in credibility analysis. The credibility analysis is used to analyze the demand and usage patterns so that optimistic planning can be achieved. Steps 1504 through 1516 describe the credibility analysis of managers (1502). For each manager, perform the steps 1506 through 1516 (1504). For each project managed by the manager, perform the steps 1508 through 1514. Determine the frequency and quantum of changes to the project plan (1508). Determine the number of ad hoc demands (1510). Determine the number of ad hoc extensions (1512). Based on these factors, determine PCF (1514). Determine the MCF based on the PCFs associated with the projects managed by the manager (1516). . Finally, update the user information (1534).

[0077] Steps 1522 through 1532 describe the credibility analysis of the users (1520). For each user, perform the steps 1525 through 1532 (1522). Determine the amount of early and late logins (1524). Determine the amount of early and late logouts (1526). Determine the number of misses (1528). Determine the average PCF of the projects of the user (1530). Based on these factors, compute UCF (15320. Finally, update the user information (1534).

[0078] Thus, a system and method for maximizing utilization of SWP licenses utilization based on a near-optimal distribution of demands by making use of project schedules and open demands has been disclosed. Although the present invention has been described particularly with reference to the figures, it will be apparent to one of the ordinary skill in the art that the present invention may appear in any number of systems that maximizes the utilization of SWP licenses. It is further contemplated that many changes and modifications may be made by one of ordinary skill in the art without departing from the spirit and scope of the present invention.

[0079] Acronym List

[0080] 1. ATU Atomic Training Unit

[0081] 2. AU Atomic Unit

[0082] 3. AWU Atomic Work Unit

[0083] 4. CF Credibility Factor

[0084] 5. MCF Manager Credibility Factor

[0085] 6. OD Open Demand

[0086] 7. ODF Open Demand Factor

[0087] 8. PCF Project Credibility Factor

[0088] 9. SLAS Software License Allocation System

[0089] 10. SWP Software Package

[0090] 11. TL Training License

[0091] 12. TP Training Project

[0092] 13. TU Training Unit

[0093] 14. UCF User Credibility Factor

[0094] 15. WL Working License

[0095] 16. WP Work Project

[0096] 17. WU Work Unit 

What is claimed is:
 1. A software license allocation system based on a near-optimal distribution of demands over a period of time for efficiently utilizing licenses of software packages, said software license allocation system comprising: (a) a user management subsystem for managing user interactions with said system, said user management subsystem comprising: a user profile management element for maintaining user profiles; a login/logout element for managing user login and logout events; a work planning element for maintaining individual user's work plans; and a training planning element for maintaining individual user's training plans; (b) a plan management subsystem for managing work and training related project plans, said plan management subsystem comprising: a work project planning element for creating, modifying, and analyzing work plans; a training project planning element for creating, modifying, and analyzing training plans; a training requirements analysis element for automatically identifying the training requirements; and a usage analysis element for analyzing user characteristics; and (c) a license usage management subsystem for managing scheduling and usage of licenses, said license usage management subsystem comprising: a resource demand analysis element for analyzing open, closed, and ad hoc demands; a usage scheduling element for weekly and daily scheduling, automated training scheduling, and procurement planning; and a usage tracking element for real-time tracking of user and system events, usage costing, and user credibility analysis.
 2. The system of claim 1, wherein said user profile management element of said user management subsystem comprises means for maintaining user related information consisting of user role, allowed list of software packages, and restriction on access time and duration.
 3. The system of claim 1, wherein said login/logout element of said user management subsystem comprises means for managing login by a user, usage activity of said user, and logout by said user, wherein said usage activity comprises one ore more of plurality of sub-activities consisting of: performing work planning, performing training planning, performing administrative activities, performing individual work planning, performing individual training planning, and using of a software package.
 4. The system of claim 1, wherein said work planning element of said user management subsystem comprises means for maintaining individual work plan of a user, wherein said maintenance comprises: allowing said user to create, modify, or delete an individual work plan; validation of the input work plan; and updation of usage information.
 5. The system of claim 1, wherein said training element of said user management subsystem comprises means for maintaining individual training plan of a user, wherein said maintenance comprises: allowing said user to create, modify, or delete an individual training plan; validation of the input training plan; and updation of usage information.
 6. The system of claim 1, wherein said work project planning element of said plan management subsystem comprises means for creating and modifying a work project plan, wherein said work project plan describes a plurality of work units, said creation and modification comprises: splitting each of said plurality of work units into a plurality of atomic work units; checking of license availability for each of said plurality of atomic work units; and updation of usage information.
 7. The system of claim 6, wherein said work project planning element further comprises means for analyzing a work project plan, wherein said analysis comprises: construction of a plurality of dependence trees based on said work project plan, wherein each of said plurality of dependence trees describes the dependence of a plurality of work units; determination of shift tolerance based on neighborhood analysis of each of said plurality of dependence trees; shifting of said plurality of work units of said plurality of dependence trees, wherein said shifting is based on a plurality of constraints, and updation of usage information.
 8. The system of claim 1, wherein said training project planning element of said plan management subsystem comprises means for creating and modifying a training project plan, wherein said training project plan describes a plurality of training units, and said creation and modification comprises: splitting each of said plurality of training units into a plurality of atomic training units; checking of license availability for each of said plurality of atomic training units; and updation of usage information.
 9. The system of claim 8, wherein said training project planning element further comprises means for analyzing a training project plan, wherein said analysis comprises: construction of a plurality of dependence trees based on said training project plan, wherein each of said plurality of dependence trees describes the dependence of a plurality of training units; determination of shift tolerance based on neighborhood analysis of each of said plurality of dependence trees; shifting of said plurality of training units of said plurality of dependence trees, wherein said shifting is based on a plurality of constraints; and updation of usage information.
 10. The system of claim 1, wherein said training requirements analysis element of said plan management subsystem comprises means for analyzing a work project plan for identification of training requirements, wherein said analysis comprises: determination of a plurality of users part of said work project plan; identification of a plurality of software packages of each of said plurality of users; determination of a training requirement for each of said plurality of users on each of said plurality of software packages based on last version of each of said plurality of software packages trained on and used by each of said plurality of users; splitting the said training requirement into a plurality of atomic training units; scheduling training program by allotting time slots for each of said plurality of atomic units, wherein said allotment of time slots is based on a plurality of constraints related to availability; and updation of usage information.
 11. The system of claim 1, wherein usage analysis element of said plan management subsystem comprises means for analyzing usage characteristics of a user for effective distribution of demands and adjusting a work plan, wherein said analysis comprises: determination of start time expected difference between allotted start time slot and actual login time slot of said user; determination of end time expected difference between allotted end time slot and actual logout time slot of said user; adjusting of allotted start and end time slots of said user in said work plan based on said start time expected difference and end time expected difference; and updation of usage information.
 12. The system of claim 1, wherein said resource demand analysis element of said license usage management subsystem comprises means for analyzing open, closed, and ad hoc demands, wherein said analysis of an open demand with start and end time comprises: determination of open demand factor based on a plurality of factors consisting of: open demand interval based on said start and end time, elapsed time based on said start time, number of requested hours of usage, and number of hours used; and determination of number of hours to be allotted during a week based on said determined open demand factor; said analysis of a plurality of closed demands of a project plan comprises: identification of a plurality of software packages associated with said project plan; construction of a demand matrix for each of said plurality of software packages; determination of a plurality of critical slots in said demand matrix, wherein total demand in each of said plurality of critical slots associated with said project plan exceeds availability; and adjusting of each of said plurality of critical slots based on dependency tree analysis to reduce criticality; and said analysis of a plurality of ad hoc demands of a project plan comprises: determination of total planned demand and total ad hoc demand for project of said project plan; and computation of priority of each of said plurality of ad hoc request based on said total planned demand, said total ad hoc demand, priority of said project, and total demand to be met in the subsequent week.
 13. The system of claim 12, wherein said resource demand analysis element further comprises means for analyzing a plurality of dependency trees, wherein said analysis comprises: determination of a plurality of partial dependency trees for a plurality of projects; construction of a partial demand matrix for each of said plurality of partial dependency trees; determination of a plurality of critical slots for said partial demand matrix; determination of a set of ordered atomic units of said plurality of critical slots, wherein said ordering is based on amount of shift required and shift tolerance; adjusting of a plurality of atomic units in said set, wherein said adjustment is based on said set of ordered atomic units; and updation of usage information.
 14. The system of claim 1, wherein said usage scheduling element of said license usage management subsystem comprises means for performing weekly and daily scheduling of a software package, wherein said performing of weekly scheduling comprises: determination of a demand matrix for said software package; determination of a plurality of critical slots of said demand matrix, wherein total demand of each of said plurality critical slots exceeds availability; identification of a plurality of projects and a plurality of users part of each of said plurality of critical slots; arranging of a plurality of demands of each of said plurality of critical slots based on priority of each of said plurality of projects and credibility factor of each of said plurality of users; determination of derived demand based on excess demand of each of said plurality of critical slots, said priority and said credibility factor; identification of a plurality of demands with low priority based on said arrangement of said plurality of demands; adjustment of said plurality of demands to reduce criticality; and communication of said adjustment to managers of said plurality of projects; and said performing of daily scheduling comprises: determination of a demand matrix for said software package; determination of a plurality of critical slots of said demand matrix, wherein total demand of each of said plurality critical slots exceeds availability; identification of a plurality of projects part of each of said plurality of critical slots; arranging of a plurality of demands of each of said plurality of critical slots based on priority of each of said plurality of projects; removing of a minimum number of demands, wherein said removal is based on said arrangement of said plurality of demands and reduces criticality; and updation of usage information.
 15. The system of claim 14, wherein said usage scheduling element further comprises means for automatically scheduling training demands during a week, wherein said demands consists of open and closed demands from a plurality of users, and auto demands, wherein said automatic scheduling comprises: identification of a plurality of slots associated with each day of said week; determination of expected utilization of each of said plurality of slots; determination of a plurality of lean slots, wherein said determination is based on said expected utilization; determination of a plurality of heavy slots, wherein said determination is based on said expected utilization; determination of number of work licenses that can be used for training purposes; filling of a demand matrix based on said number of work licenses, available number of training licenses, and time availability of said plurality of users; determination of a plurality of critical slots based on unavailability of licenses; reducing of overall demand, wherein said reduction is based on the elimination of demands in said demand matrix in the order of auto, open, and closed demands; determination of training schedule based on said filling and said reduction; and communication of said training schedule to said plurality of users and manager of said plurality of users.
 16. The system of claim 14, wherein said usage scheduling element further comprises means for procurement planning of a plurality of licenses of a software package, wherein said procurement planning comprises: real-time procurement of licenses of said software package to meet excess and ad hoc demands; analysis of procured licenses; determination of a pattern in procurement based on said analysis; determination of portion covered by procured licenses based on said pattern; releasing of a plurality of licenses based on said portion coverage; and procurement of a plurality of licenses of said software package based on said portion coverage.
 17. The system of claim 1, wherein said usage tracking element of said license usage management subsystem comprises means for real-time tracking of events consisting of: login, logout, and timer events, and a priority queue, wherein said real-time tracking of said login event of a user part of a project to use a software package comprises: determination of allotted time slot of said user; checking of time of login, wherein said checking is based on early, on time, and late login times with respect to said allotted time; determination of expected logins; determination of expected logouts; determination of demand priority based on nature of demand of said user, priority of said project, and credibility factor of said user; allowing of said user to use said software package based on said demand priority, license availability, short closing of extended sessions, and procurement of hourly licenses; adding of demand of said user to said priority queue, and upation of usage and software package information; said real-time tracking of said logout event of a user part of a project to use a software package comprises: determination of allotted time slot; identifying a demand from said priority queue; allowing of login based on said demand; and updation of usage and software package information; and said real-time tracking of said timer event during a time slot comprises: determination of demand and license availability; determination of a plurality of users whose session closes during said time slot; allowing of extension time for each of said plurality of users based on priority of project of each of said plurality of users, said demand, said license availability, and credibility factor of each of said plurality of users; sending of notification to a plurality of users to close session at the end of said time slot; determining a plurality of users waiting for a longer period of time; sending notification to said plurality of users waiting for a longer period of time to logout; and determining an exceptional extension of a demand by a user part of a project based on priority of said project and credibility factor of said user, and sending notification to said user.
 18. The system of claim 17, wherein said usage tracking element further comprises means for costing a demand by a user to use a software package, wherein said costing comprises: determination cost of using said software package by said user, wherein said determination is based on value of said software package, the nature of said demand, total hours of use of said software package by said user, extended hours of use of said software package by said user; determination of discount based on accommodated extension and open demand; and updation of usage cost information.
 19. The system of claim 17, wherein said usage tracking element further comprises means for credibility analysis of a user of software license allocation system, wherein said credibility analysis of a manager comprises: determination of a plurality of projects managed by said manager; determination of frequency and amount of changes made to each of said plurality of projects; determination of number of ad hoc demands by users of each of said plurality of projects; determination of number of ad hoc extensions by users of each of said plurality of projects; determination of project specific credibility factor for each said plurality of projects; determination of credibility factor of said manager based on project specific credibility factor of each of said plurality of projects; and updation of user information; and said credibility analysis of a user of a software package comprises: determination of amount early and late logins of said user; determination of amount of early and late logouts of said user; determination of number of misses by said user; determine average project credibility factor of a plurality of projects of said user; determination of credibility factor of said user; and updation of user information.
 20. An apparatus for a near-optimal distribution of demands over a period of time for efficiently utilizing licenses of a plurality of software packages, said apparatus comprising: (a) a plurality of client computer systems for executing user management subsystem related procedures comprising: a software subsystem for user profile management; a software subsystem for managing user login and logout events; a software subsystem for maintaining individual user's work plans; and a software subsystem for maintaining individual user's training plans; (b) a server computer system for executing plan management related procedures and license usage management subsystem related procedures comprising: a software subsystem for creating, modifying, and analyzing work plans; a software subsystem for creating, modifying, and analyzing training plans; a software subsystem for automatically identifying the training requirements; a software subsystem for analyzing user and usage characteristics; a software subsystem for analyzing open, closed, and ad hoc demands; a software subsystem for weekly and daily scheduling; a software subsystem for automated training scheduling; a software subsystem for procurement planning; a software subsystem for real-time tracking of user and system events; a software subsystem for usage costing; and a software subsystem for user credibility analysis; (c) a repository computer system for managing a repository of said plurality of software packages; (d) a local area network interconnecting said plurality of client computer systems, said server computer system, and said repository computer system; and (e) an IP network for interconnecting said server computer system and a plurality of software package vendor computer systems for managing procurement of licenses of said plurality of software packages. 